Author |
Message |
nik0la
Заглянувший
Joined: 06 Sep 2007
Posts: 6
Карма: 0 поощрить/наказать
|
Posted: Thu Sep 06, 2007 9:30 am (написано за 5 минут 15 секунд)
Post subject: Опять про поиск по MySQL
|
|
Имеется такой запрос: Code (php): | скопировать код в буфер обмена | $result = mysql_query (www.php.net/mysql_query)("SELECT * FROM bbs WHERE message LIKE '%". preg_replace (www.php.net/preg_replace)("/ /", "%' AND message LIKE '%", $stxt). "%' ORDER BY id DESC LIMIT ".$start_pos.", ".$perpage); | где message - TEXT В принципе все работает. Но если к примеру ввести слово которого нет в базе, то всеравно что-то выводится, хотя искомого слова в результатах нет и оно не входит ни в одно другое слово.
|
|
Back to top |
|
 |
Maus
Модератор

Joined: 29 Jun 2003
Posts: 8151
Карма: 271 поощрить/наказать
Location: пос. Омсукчан Магаданской области
|
Posted: Thu Sep 06, 2007 8:17 pm (спустя 10 часов 46 минут; написано за 1 минуту 24 секунды)
Post subject:
|
|
nik0la
Вы сам еткст запроса выведите (-; классик почти так wrote: |
Мне кажется, preg_replace тут неуместен! |
|
|
Back to top |
|
 |
nik0la
Заглянувший
Joined: 06 Sep 2007
Posts: 6
Карма: 0 поощрить/наказать
|
Posted: Fri Sep 07, 2007 11:13 am (спустя 14 часов 56 минут; написано за 58 секунд)
Post subject:
|
|
поспешил я немного запостив на форум :) в общем так сейчас работает как нужно Code (php): | скопировать код в буфер обмена | $result = mysql_query (www.php.net/mysql_query)("SELECT *, IF (message REGEXP '".$stxt."', 3*10, 0) + IF (message REGEXP '".str_replace(" ", "', 9, 0) + IF (message REGEXP '", $stxt)."', 9, 0) + IF (msgtitle REGEXP '".$stxt."', 3*10, 0) + IF (msgtitle REGEXP '".str_replace(" ", "', 9, 0) + IF (msgtitle REGEXP '", $stxt)."', 9, 0) AS relev FROM `bbs` WHERE ((`message` REGEXP '".str_replace(" ", "' OR `message` REGEXP '", $stxt)."' OR `msgtitle` REGEXP '".str_replace(" ", "' OR `msgtitle` REGEXP '", $stxt)."') AND date > '$ct') AND type='$st' ORDER BY relev DESC,id DESC LIMIT ".$start_pos.", ".$perpage); |
|
|
Back to top |
|
 |
nik0la
Заглянувший
Joined: 06 Sep 2007
Posts: 6
Карма: 0 поощрить/наказать
|
Posted: Tue Jan 15, 2008 6:19 am (спустя 4 месяца 7 дней 19 часов 5 минут; написано за 6 минут 25 секунд)
Post subject:
|
|
У меня новая проблема. Запрос такого вида Code (php): | скопировать код в буфер обмена | $result = @mysql_query (www.php.net/mysql_query)("SELECT * FROM `bbs` WHERE ((`message` REGEXP '".str_replace(" ", "' OR `message` REGEXP '", $stxt)."))"); | работает, но слишком сильно грузит БД (хостер ругается) Упростил его до такого вида: Code (php): | скопировать код в буфер обмена | $result = @mysql_query (www.php.net/mysql_query)("SELECT * FROM `bbs` WHERE (MATCH (message) AGAINST ('".$stxt."'))"); | Вроде тоже работает, но не ищет по некоторым запросам. Например: 392-175 или 111-250/400, хотя 1126-150-Ц ищет Записей в базе - 24998 message - text Индексы: PRIMARY - PRIMARY - 24998 - id message - FULLTEXT - 1 - message
|
|
Back to top |
|
 |
Юрий Насретдинов
Модератор

Joined: 13 Mar 2003
Posts: 8642
Карма: 197 поощрить/наказать
Location: 007 495
|
Posted: Tue Jan 15, 2008 7:58 am (спустя 1 час 39 минут; написано за 19 секунд)
Post subject:
|
|
nik0la
Вероятно, слова длиной меньше, чем 4 символа не индексируются?
|
|
Back to top |
|
 |
nik0la
Заглянувший
Joined: 06 Sep 2007
Posts: 6
Карма: 0 поощрить/наказать
|
Posted: Tue Jan 15, 2008 8:23 am (спустя 24 минуты; написано за 1 минуту)
Post subject:
|
|
Юрий, а не подскажите где это можно посмотреть? UPD Опять поторопился спрашивать :) В Я. нашел ссылку hттp://www.weblibrary.biz/mysql/funkcii/funkcii-text/nastroika-poiska как я понял копать нужно ft_min_word__len и ft_max_word_ len
|
|
Back to top |
|
 |
Юрий Насретдинов
Модератор

Joined: 13 Mar 2003
Posts: 8642
Карма: 197 поощрить/наказать
Location: 007 495
|
Posted: Tue Jan 15, 2008 5:26 pm (спустя 9 часов 3 минуты; написано за 50 секунд)
Post subject:
|
|
nik0la
Копать в эту сторону стоит лишь только в том случае, если Вас не устраивает такой результат, и Вы знаете, какие последствия понесёт изменение умолчательных настроек
|
|
Back to top |
|
 |
nik0la
Заглянувший
Joined: 06 Sep 2007
Posts: 6
Карма: 0 поощрить/наказать
|
Posted: Wed Jan 16, 2008 6:49 am (спустя 13 часов 23 минуты; написано за 26 секунд)
Post subject:
|
|
ok. понял. спасибо за консультацию.
|
|
Back to top |
|
 |
Raul7
Участник форума
Joined: 30 Jan 2008
Posts: 24
Карма: -4 поощрить/наказать
|
Posted: Wed Jan 30, 2008 5:09 pm (спустя 14 дней 10 часов 19 минут)
Post subject:
|
|
nik0la wrote: |
работает, но слишком сильно грузит БД (хостер ругается) | ты вместо запроса всех полеи запроси только нужные.например $result = @mysql_query ("Select user,pass,midmlr,level,user_ip,mobile,user_soft from users where id='".$id."'"); но не $result = @mysql_query ("Select * from users where id='".$id."'");
|
|
Back to top |
|
 |
Maus
Модератор

Joined: 29 Jun 2003
Posts: 8151
Карма: 271 поощрить/наказать
Location: пос. Омсукчан Магаданской области
|
Posted: Wed Jan 30, 2008 9:16 pm (спустя 4 часа 6 минут; написано за 10 секунд)
Post subject:
|
|
Raul7 wrote: |
@mysql_query | собаку-то зачем?
|
|
Back to top |
|
 |
Raul7
Участник форума
Joined: 30 Jan 2008
Posts: 24
Карма: -4 поощрить/наказать
|
Posted: Wed Jan 30, 2008 9:37 pm (спустя 20 минут; написано за 45 секунд)
Post subject:
|
|
например если возникнет ошибка, без собачки она на экране появится, а с собачкой типа игнор всех ошибок, которые могут возникнуть при этом запросе
|
|
Back to top |
|
 |
bæv
Модератор «Дзена»

Joined: 27 Aug 2003
Posts: 7275
Карма: 9986 поощрить/наказать
|
Posted: Thu Jan 31, 2008 12:18 pm (спустя 14 часов 41 минуту; написано за 1 минуту 21 секунду)
Post subject:
|
|
Raul7: 1. Здесь принято общение «на Вы» — forum.dklab.ru/about/todo/PravilaEtogoForuma-ProchitayteObyazatelno.html
2. Про «собачек» обязательно прочтите вот это — phpfaq.ru/debug2
|
|
Back to top |
|
 |
Raul7
Участник форума
Joined: 30 Jan 2008
Posts: 24
Карма: -4 поощрить/наказать
|
Posted: Thu Jan 31, 2008 11:31 pm (спустя 11 часов 12 минут; написано за 17 секунд)
Post subject:
|
|
bæv уже прочел.спасибо
|
|
Back to top |
|
 |
|